Ошибка проверки XML - PullRequest
       21

Ошибка проверки XML

2 голосов
/ 14 сентября 2009

Я пытаюсь проверить следующий 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 .

появляется следующая ошибка.

Ошибка: Разметка в документе после корневого элемента должна быть правильно сформирована.

Положение ошибки: <<strong> m enu id = "LanguageSelection">

Ответы [ 4 ]

2 голосов
/ 14 сентября 2009

Вам нужен элемент корневого уровня. Например, оберните элементы меню внутри тега <menus>.

<menus>
    <menu>
    </menu>
    <menu>
    </menu>
</menus>
2 голосов
/ 14 сентября 2009

У вас есть более одного элемента верхнего уровня <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>

Вы можете быстро проверить ваш xml, открыв его в ie. Когда я открыл ваш xml, это то, что я получил.

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

<menu id="LanguageSelection">
-^
1 голос
/ 14 сентября 2009

Основная причина вашей проблемы заключается в том, что ваш XML-документ содержит более одного корневого элемента на файл.

В вашем конкретном случае основная структура вашего документа была:

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

Это определяет 3 корневых элемента в вашем документе.

Чтобы определить один элемент, вам нужно окружить три элемента одним корневым элементом следующим образом:

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

Вы можете узнать больше в этом простом учебнике, который я нашел .

1 голос
/ 14 сентября 2009

Хорошо сформированности

РЕЗЮМЕ:

Спецификация XML определяет XML документ как текст, который хорошо сформирован, то есть удовлетворяет списку правил синтаксиса, представленных в Спецификация. Список довольно длительный; некоторые ключевые моменты:

  1. Содержит только правильно закодированные допустимые символы Юникода.
  2. Нет специального синтаксиса такие символы, как «<» и «&» появляются кроме как при выполнении их Разметка-разграничение ролей. </li>
  3. Начало, конец и пустой элемент теги, которые разграничивают элементы правильно вложенный, без пропусков и ни один не перекрывается.
  4. Теги элемента чувствительны к регистру; теги начала и конца должны точно соответствует.
  5. Существует один "корневой" элемент который содержит все остальные элементы.
...