Я получаю ошибку объявления разметки в строке объявления atlist в следующем XML-файле:

<?xml encoding="UTF-8"?>
<!ELEMENT catalog (title,(plant)+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT plant ((name)+,(climate)+,(height)+,(usage)+,(image)+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT climate (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT usage (#PCDATA)>
<!ELEMENT image (#PCDATA)>
<!ATLIST plant id CDATA #REQUIRED>

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE catalog SYSTEM "plantdtd.dtd">

<catalog>

<title>Flowers of the week</title>

<plant id="A1">

    <name>Aloe vera</name>

    <climate>tropical</climate>

    <height>60-100cm</height>

    <usage>medicinal</usage>

    <image>aloevera.jpg</image>

</plant>

<plant id="A2">

    <name>Orchidaceae</name>

    <height>8-12in</height>

    <usage>medicinal</usage>

    <usage>decoration</usage>

    <image>Orchidaceae.jpg</image>

</plant>

</catalog>

Что не так с моим документом XML?

0
Vijay 28 Май 2017 в 06:25

2 ответа

Лучший ответ

В вашем XML-документе есть проблемы с корректностью и валидностью...

Проблемы, препятствующие правильной форме документа XML, в том числе:

  • Там внутренний синтаксис DTD не создан должным образом.
  • Есть несколько объявлений XML.
  • ATLIST должен быть ATTLIST

Проблема, препятствующая тому, чтобы ваш XML-документ был действительным :

  • A2 plant должен иметь хотя бы один дочерний элемент climate.

Следующий XML исправлен так, чтобы он был правильно сформированным и действительным :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog [
<!ELEMENT catalog (title,(plant)+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT plant ((name)+,(climate)+,(height)+,(usage)+,(image)+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT climate (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT usage (#PCDATA)>
<!ELEMENT image (#PCDATA)>
<!ATTLIST plant id CDATA #REQUIRED>
]>

<catalog>
  <title>Flowers of the week</title>
  <plant id="A1">
    <name>Aloe vera</name>
    <climate>tropical</climate>
    <height>60-100cm</height>
    <usage>medicinal</usage>
    <image>aloevera.jpg</image>
  </plant>
  <plant id="A2">
    <name>Orchidaceae</name>
    <climate/>
    <height>8-12in</height>
    <usage>medicinal</usage>
    <usage>decoration</usage>
    <image>Orchidaceae.jpg</image>
  </plant>
</catalog>
1
kjhughes 28 Май 2017 в 04:13

Эта ошибка вызвана тем, что файл DTD является недействительным. Вы создали DTD-файл, содержащий:

<!DOCTYPE catalog [
…
]>

Просто удалите первую и последнюю строку, разделяя данные DTD, поскольку они должны использоваться только при наличии DTD в вашем XML-файле. А там должно быть? в климате т.к. на заводе А2 его нет.

`

<?xml version="1.0" encoding="UTF-8"?>

 <!ELEMENT catalog (title,plant+)>
 <!ELEMENT title (#PCDATA)>
 <!ELEMENT plant (name,climate?,height,usage+,image)>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT climate (#PCDATA)>
 <!ELEMENT height (#PCDATA)>
 <!ELEMENT usage (#PCDATA)>
 <!ELEMENT image (#PCDATA)>
 <!ATTLIST plant id CDATA #REQUIRED>

`

0
Shobhit Solanki 1 Июн 2017 в 04:08