XML验证错误

时间:2009-09-14 11:49:34

标签: xml validation

我正在尝试验证以下XML,但我无法,请您发现错误吗?

<!-- menu: its a menu -->
<menu id="Welcome">
    <!--audio: file to play -->
    <audio src="D:\Telephony\VOXs\Welcome.vox" />
</menu>

<!-- form: its a menu -->
<menu id="LanguageSelection">
    <audio src="D:\Telephony\VOXs\LanguageSelection.vox" />

    <input timeout="5" max_timeout="2" max_invalid_input="2" valid_dtmfs="1, 2">

        <!-- noinput: if timeout occurred, execute this -->
        <noinput>
            <audio src="D:\Telephony\VOXs\Timeout.vox" />
        </noinput>

        <!-- nomatch: if wrong dtmf given, following will execute -->
        <nomatch>
            <audio src="D:\Telephony\VOXs\InvalidInput.vox" />
        </nomatch>

        <switch>
            <dtmf-1>
                <audio src="D:\Telephony\VOXs\EnglishSelected.vox" />
            </dtmf-1>

            <dtmf-2>
                <audio src="D:\Telephony\VOXs\UrduSelected.vox" />
            </dtmf-2>
        </switch>
    </input>
</menu>

<menu id="MainMenu">
    <audio src="D:\Telephony\VOXs\MainMenu.vox" />

    <input timeout="5" max_timeout="2" max_invalid_input="2" valid_dtmfs="1, 2">

        <!-- noinput: if timeout occurred, execute this -->
        <noinput>
            <audio src="D:\Telephony\VOXs\Timeout.vox" />
        </noinput>

        <!-- nomatch: if wrong dtmf given, following will execute -->
        <nomatch>
            <audio src="D:\Telephony\VOXs\InvalidInput.vox"/>
        </nomatch>

        <switch>
            <dtmf-1>
                <goto menu="InformationMenu" />
            </dtmf-1>

            <dtmf-2>
                <goto menu="SupportMenu" />
            </dtmf-2>
        </switch>
    </input>
</menu>

使用Validome.org验证时出现以下错误。

错误:根元素后面的文档中的标记必须格式正确。

错误位置:&lt; m enu id =“LanguageSelection”&gt;

4 个答案:

答案 0 :(得分:2)

您有多个顶级元素<menu>

尝试以下方法。我已将<MenuItems>添加为顶级元素,并在结尾处将其关闭。

<MenuItems>
<!-- menu: its a menu -->
<menu id="Welcome">
    <!--audio: file to play -->
    <audio src="D:\Telephony\VOXs\Welcome.vox" />
</menu>

<!-- form: its a menu -->
<menu id="LanguageSelection">
    <audio src="D:\Telephony\VOXs\LanguageSelection.vox" />

    <input timeout="5" max_timeout="2" max_invalid_input="2" valid_dtmfs="1, 2">

        <!-- noinput: if timeout occurred, execute this -->
        <noinput>
                <audio src="D:\Telephony\VOXs\Timeout.vox" />
        </noinput>

        <!-- nomatch: if wrong dtmf given, following will execute -->
        <nomatch>
                <audio src="D:\Telephony\VOXs\InvalidInput.vox" />
        </nomatch>

        <switch>
                <dtmf-1>
                        <audio src="D:\Telephony\VOXs\EnglishSelected.vox" />
                </dtmf-1>

                <dtmf-2>
                        <audio src="D:\Telephony\VOXs\UrduSelected.vox" />
                </dtmf-2>
        </switch>
    </input>
</menu>

<menu id="MainMenu">
    <audio src="D:\Telephony\VOXs\MainMenu.vox" />

    <input timeout="5" max_timeout="2" max_invalid_input="2" valid_dtmfs="1, 2">

        <!-- noinput: if timeout occurred, execute this -->
        <noinput>
                <audio src="D:\Telephony\VOXs\Timeout.vox" />
        </noinput>

        <!-- nomatch: if wrong dtmf given, following will execute -->
        <nomatch>
                <audio src="D:\Telephony\VOXs\InvalidInput.vox"/>
        </nomatch>

        <switch>
                <dtmf-1>
                        <goto menu="InformationMenu" />
                </dtmf-1>

                <dtmf-2>
                        <goto menu="SupportMenu" />
                </dtmf-2>
        </switch>
    </input>
</menu>
</MenuItems>

你可以通过在ie中打开来快速检查你的xml。当我打开你的xml时,这就是我得到的。

Only one top level element is allowed in an XML document. Error processing resource 'file://Users/shoban/...

<menu id="LanguageSelection">
-^

答案 1 :(得分:2)

您需要一个根级别元素。例如,将菜单元素包装在<menus>标记内。

<menus>
    <menu>
    </menu>
    <menu>
    </menu>
</menus>

答案 2 :(得分:1)

Well-formedness

  

内容:

     

XML规范定义了XML   文件作为文本   格式良好,即它满足列表   的语法规则   规格。名单是公平的   冗长;一些关键点是:

     
      
  1. 它只包含正确编码   合法的Unicode字符。
  2.   
  3. 没有特殊的语法   诸如“&lt;”之类的字符和“&amp;”   除了执行他们的时候出现   标记 - 描述角色。
  4.   
  5. 开头,结尾和空元素   分隔元素的标签   正确嵌套,没有遗漏   没有重叠。
  6.   
  7. 元素标签区分大小写;   开头和结尾标签必须   完全匹配。
  8.   
  9. 有一个“根”元素   其中包含所有其他   元件。
  10.   

答案 3 :(得分:1)

问题的根本原因是您的xml文档每个文件有多个根元素。

在您的特定情况下,您的文档的基本结构是:

<menu></menu>
<menu></menu>
<menu></menu>

这是在文档中定义3个根元素。

为了定义单个元素,您需要使用单个根元素围绕这三个元素,如下所示:

<menus>
   <menu></menu>
   <menu></menu>
   <menu></menu>
</menus>

您可以在此simple tutorial I found找到更多信息。