Идентификаторы XML DTD и указатели IDREF

Я получаю сообщение об ошибке, не могу найти много документации по.

это фрагмент XML.

<Department Code="LING" Chair="BL">
  <Title>Linguistics</Title>
  <Course Number="LING180" Prerequisites="CS107 CS109" Instructors="DJ" Enrollment="60">
    <Title>From Languages to Information</Title>
    <Description>
      Natural language processing. Cross-listed as
      <Courseref Number="CS124"/>
    </Description>
  </Course>
  <Lecturer InstrID="DJ">
    <First_Name>Dan</First_Name>
    <Middle_Init>D.</Middle_Init>
    <Last_Name>Jurafsky</Last_Name>
  </Lecturer>
  <Professor InstrID="BL">
    <First_Name>Beth</First_Name>
    <Last_Name>Levin</Last_Name>
  </Professor>
  <Lecturer InstrID="FZ">
    <First_Name>Frank</First_Name>
    <Last_Name>Zoidberg</Last_Name>
  </Lecturer>
</Department>

а вот и мой DTD

<!ELEMENT Course_Catalog (Department*)>
<!ELEMENT Department (Title, Course+, Professor+, Lecturer?)>
<!ATTLIST Department Code CDATA #REQUIRED
  Chair IDREFS #REQUIRED>
<!ELEMENT Course (Title, Description)>
<!ATTLIST Course Number ID #REQUIRED
  Prerequisites IDREFS #IMPLIED
  Instructors IDREFS #REQUIRED
  Enrollment CDATA #IMPLIED>
<!ELEMENT Title (#PCDATA)>
<!ELEMENT Description (#PCDATA | Courseref)*>
<!ELEMENT Courseref EMPTY>
<!ELEMENT Courseref Course IDREF #REQUIRED>
<!ELEMENT Professor (First_Name, Middle_Initial?, Last_Name)>
<!ATTLIST Professor InstrID ID #REQUIRED>
<!ELEMENT Lecturer (First_Name, Middle_Initial?, Last_Name)>
<!ATTLIST Lecturer InstrID ID #REQUIRED>
<!ELEMENT First_Name (#PCDATA)>
<!ELEMENT Middle_Initial (#PCDATA)>
<!ELEMENT Last_Name (#PCDATA)>

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

 parser error : xmlParseElementDecl: 'EMPTY', 'ANY' or '(' expected

и следующий

 parser error : Content error in the external subset

которые немного расплывчаты, но я думаю, что это связано с идентификаторами и IDREFS. Как вы можете видеть, у лекторов и профессоров одинаковая ссылка на указатель идентификатора. Атрибуты кафедры и атрибуты курса преподаватели указывают на InstrID. и ELEMENT курса ссылаются на другие Курсы через Предварительные условия и упоминаются через Courseref с помощью в Описании. как вы можете видеть, многое передается вокруг. хотя я знаю, что с помощью DTD вы не можете реально ограничивать ссылки на идентификаторы, пока там что-то есть.

но я не могу понять эту ошибку, я помещаю их в неправильный порядок или мои ID-IDREFS неверны?? любая помощь будет отличной

2 ответа

Решение
<!ELEMENT Courseref Course IDREF #REQUIRED> 

Это должен быть ATTLIST, а не ELEMENT

Я делаю то же самое упражнение, и, наконец, я должен закончить.. Я вижу ошибку в одном окне, это:

 Department (Title, Course+, Professor+, Lecturer?)

Я сделал это так:

Department (Title,Course*,(Professor|Lecturer)*)

потому что вы можете иметь: звание (1), курс (0..n), профессор или лектор (0..n поочередно)

Другие вопросы по тегам