2014-12-15 2 views
0

Итак, я написал этот XML-документ, но мне не удалось написать DTD, в котором он действителен. Я знаю, что проблема в том, что идентификатор (имя студента «DB») встречается дважды в документе, и поэтому он не является uniqe. Но как я могу изменить свой DTD, чтобы позволить ID сделать это? Я действительно зеленый в этой области, так что это может быть глупый вопрос.XML недействителен для DTD (тот же идентификатор)

<?xml version="1.0" standalone="no"?> 
<!DOCTYPE COURSES [ 
<!ELEMENT COURSES (COURSE*)> 
<!ELEMENT COURSE (PROFESSOR+, STUDENT+)> 
<!ATTLIST COURSE name ID #REQUIRED> 
<!ELEMENT PROFESSOR EMPTY> 
<!ATTLIST PROFESSOR name ID #REQUIRED> 
<!ELEMENT STUDENT (NOTES*)> 
<!ATTLIST STUDENT name ID #REQUIRED> 
<!ATTLIST STUDENT enrolled IDREFS #IMPLIED> 
<!ELEMENT NOTES (#PCDATA)> 
]> 
<COURSES> 
<COURSE name="Architecture"> 
<PROFESSOR name="Andersson"/> 
<STUDENT name="JB" enrolled="Architecture"> 
<NOTES>2nd BaSC</NOTES> 
</STUDENT> 
<STUDENT name="DB" enrolled="Architecture"/> 
</COURSE> 
<COURSE name="Mechanics"> 
<PROFESSOR name="Geerts"/> 
<STUDENT name="DB" enrolled="Mechanics"/> 
</COURSE> 
</COURSES> 
+1

Это действительно зависит от вашей семантики. ID означает, что это уникальный атрибут. Вместо этого вы можете использовать CDATA. http://xmlwriter.net/xml_guide/attlist_declaration.shtml – Phil

+2

Вы, вероятно, столкнетесь с той же проблемой с профессорами, если профессор преподает более одного курса. Думали ли вы о разделении профессоров, студентов и курсов на свои собственные структуры? Таким образом, вы можете использовать IDREF/IDREFS в качестве ссылок на профессоров/студентов/курсов, которые нужно создать только один раз. –

+0

Если бы вы хотели привести пример раскола, о котором я говорил, дайте мне знать, и я добавлю его. –

ответ

-1

Используйте эту ссылку для проверки вашего ОТД/XML http://validator.w3.org/check, этот сайт является oficcial организацией стандарта этот lengage.

<STUDENT name="DB" enrolled="Architecture"/>

ли ответил.

Смежные вопросы