Как использовать то же имя элемента в различных целях (в XML и DTD)?

Я Хочу создать схему DTD для этого xml документа:

<root>

    <student>
        <name>
            <firstname>S1</firstname>
            <lastname>S2</lastname>
        </name>
    </student>

    <course>
        <name>CS101</name>
    </course>

</root>

как Вы видите, элемент name в course содержит простой текст, но элемент name в student составной тип (имя, фамилия). Следующим является DTD:

<!ELEMENT root (course|student)*>

<!ELEMENT student (name)>
<!ELEMENT name (lastname|firstname)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>

<!ELEMENT course (name)>

Когда я хочу проверить его, я получаю ошибку потому что курс name имеет другую структуру затем студент name .

Мой вопрос:

  • как я могу сделать обходное решение для этой ситуации, не меняя имя элемента name использование DTD не схема XML.

Спасибо.

8
задан Abdullah 30 May 2010 в 03:15
поделиться

1 ответ

Извините! Это одно из основных ограничений DTD: данное имя элемента всегда имеет одну и ту же модель содержимого.

Примерно все, что вы можете сделать, это отказаться от полной валидации для этого конкретного элемента и разрешить все возможное содержимое:

<!ELEMENT name (#PCDATA|lastname|firstname)*>
10
ответ дан 5 December 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: