Я Хочу создать схему 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.Спасибо.
Извините! Это одно из основных ограничений DTD: данное имя элемента всегда имеет одну и ту же модель содержимого.
Примерно все, что вы можете сделать, это отказаться от полной валидации для этого конкретного элемента и разрешить все возможное содержимое:
<!ELEMENT name (#PCDATA|lastname|firstname)*>