我正在尝试验证以下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;
答案 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)
内容:
XML规范定义了XML 文件作为文本 格式良好,即它满足列表 的语法规则 规格。名单是公平的 冗长;一些关键点是:
- 它只包含正确编码 合法的Unicode字符。
- 没有特殊的语法 诸如“&lt;”之类的字符和“&amp;” 除了执行他们的时候出现 标记 - 描述角色。
- 开头,结尾和空元素 分隔元素的标签 正确嵌套,没有遗漏 没有重叠。
- 元素标签区分大小写; 开头和结尾标签必须 完全匹配。
- 有一个“根”元素 其中包含所有其他 元件。
醇>
答案 3 :(得分:1)
问题的根本原因是您的xml文档每个文件有多个根元素。
在您的特定情况下,您的文档的基本结构是:
<menu></menu>
<menu></menu>
<menu></menu>
这是在文档中定义3个根元素。
为了定义单个元素,您需要使用单个根元素围绕这三个元素,如下所示:
<menus>
<menu></menu>
<menu></menu>
<menu></menu>
</menus>
您可以在此simple tutorial I found找到更多信息。