2016-03-05 9 views
0

Я требую, чтобы написать XML что-то вродеПроверка ошибок в DTD

<student Name = "aaa"> 

<subject id="abc"> 
    <assignment id="1"> 
     <name>ddd</name> 
     <Submission>12/2/1999</Submission> 
    </assignment> 
    <assignment id="2"> 
     <name>ddd</name> 
     <Submission>12/2/1999</Submission> 
    </assignment>  
</subject> 

<subject id="hjd"> 
    <assignment id="1"> 
     <name>ddd</name> 
     <Submission>12/2/1999</Submission> 
    </assignment> 
    <assignment id="2"> 
     <name>ggg</name> 
     <Submission>12/2/1999</Submission> 
    </assignment> 
</subject> 
</student> 

Что касается моего файла DTD (как я должен написать его в качестве внешнего DTD)

Я написал это как

<!ELEMENT student (subject*)> 
<!ELEMENT subject (assignment*)> 
<!ELEMENT assignment (name,submission)> 
<!ATTLIST student name PCDATA #REQUIRED> 
<!ATTLIST subject ID PCDATA #REQUIRED> 
<!ATTLIST assignment ID PCDATA #REQUIRED> 

Представление должно быть в формате даты, и я не знаю, что не так с этим. любой может помочь?

+0

Что вы имеете в виду «* я не знаю, что не так с этим»? У вас есть ошибка? – potame

+0

Я не знаю, что такое ошибка, я не могу проверить, не ошибаюсь я или что. Но я просто посмотрел на данные, которые я создал, есть ли способ узнать, есть ли что-то не так? – helloworld1

+0

Вы можете проанализировать и подтвердить свой входной XML-код DTD, чтобы проверить, правильно ли он. Кстати, мы здесь не для того, чтобы сказать, правильно или неправильно то, что вы делаете, - вам лучше знать, что вы хотите сделать, и объяснить, в чем проблемы, с которыми вы застряли. – potame

ответ

0

Как и в случае с potame, вы можете проверить свой XML на DTD, чтобы проверить, правильно ли это. Тем не менее, я вижу несколько вещей, которые наверняка неправильно ...

  • В своих декларациях ATTLIST, вы используете PCDATA, который является недействительным. Вместо этого используйте CDATA.
  • Для элемента student вы объявляете атрибут name, но ваш XML использует атрибут Name. Дело имеет значение.
  • Аналогичная проблема с атрибутом IDsubject и assignment; случай должен совпадать.
  • Ваш DTD указывает, что элемент assignment должен содержать один элемент name, за которым следует один элемент submission, но вы не объявляете эти элементы. (Кроме того, ваш XML использует Submission. Опять же, дело имеет значение.)

Вот исправленный DTD и экземпляр. Я также изменил форматирование и порядок DTD, чтобы сделать его немного легче читать, но эта часть не имеет значения.

XML DTD

<!ELEMENT student (subject*)> 
<!ATTLIST student 
      name CDATA #REQUIRED> 

<!ELEMENT subject (assignment*)> 
<!ATTLIST subject 
      id CDATA #REQUIRED> 

<!ELEMENT assignment (name,submission)> 
<!ATTLIST assignment 
      id CDATA #REQUIRED> 

<!ELEMENT name (#PCDATA)> 
<!ELEMENT submission (#PCDATA)> 

XML Instance

<student name="aaa"> 
    <subject id="abc"> 
     <assignment id="1"> 
      <name>ddd</name> 
      <submission>12/2/1999</submission> 
     </assignment> 
     <assignment id="2"> 
      <name>ddd</name> 
      <submission>12/2/1999</submission> 
     </assignment> 
    </subject> 
    <subject id="hjd"> 
     <assignment id="1"> 
      <name>ddd</name> 
      <submission>12/2/1999</submission> 
     </assignment> 
     <assignment id="2"> 
      <name>ggg</name> 
      <submission>12/2/1999</submission> 
     </assignment> 
    </subject> 
</student> 

Вы должны также ссылаться на DTD с декларацией DOCTYPE в XML, но я не знаю, как и где вы 're представления этих данных.

Я также не знаю, что такое «Представление должно быть в формате даты». Какой формат? ISO 8601? Если вы дадите более подробную информацию, я смогу ответить на любой вопрос о формате даты.