Определение тегов XML / пространств имен? Нераспознанные предупреждения

Я очень плохо знаком с XML и не понимаю, почему я получаю эти предупреждения или что они значат. Я определяю теги для представления списка игр. Вот мой файл dtd и предупреждения, которые IDE определила.

мой дтд файл

Что означают эти предупреждения и как их устранить? Спасибо!

1 ответ

Каждая ошибка связана с необъявленным элементом. Чтобы устранить эти конкретные ошибки, вам необходимо объявить каждый элемент, на который есть ссылка в вашем DTD. (Добавлять <!ELEMENT декларации для name, developer, engine, так далее.)

Кроме того, у вас есть name, developer, engineи т. д. объявлены как атрибуты (<!ATTLIST).

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

Вот несколько примеров. (DTD и XML объединены, чтобы облегчить тестирование. (DTD находится во внутреннем подмножестве.) DTD могут быть разделены.):

Использование элементов

<!DOCTYPE gamelist [
<!ELEMENT gamelist (game*)>

<!ELEMENT game (data,metadata)>
<!ELEMENT data (name,developer,engine?,releasedate?)>
<!ELEMENT metadata (hoursplayed?,lastplayed?,lastdataupdate)>

<!ELEMENT name (#PCDATA)>
<!ELEMENT developer (#PCDATA)>
<!ELEMENT engine (#PCDATA)>
<!ELEMENT releasedate (#PCDATA)>
<!ELEMENT hoursplayed (#PCDATA)>
<!ELEMENT lastplayed (#PCDATA)>
<!ELEMENT lastdataupdate (#PCDATA)>

]>
<gamelist>
    <game>
        <data>
            <name></name>
            <developer></developer>
            <engine></engine>
            <releasedate></releasedate>
        </data>
        <metadata>
            <hoursplayed></hoursplayed>
            <lastplayed></lastplayed>
            <lastdataupdate></lastdataupdate>
        </metadata>
    </game>
</gamelist>

Использование атрибутов

<!DOCTYPE gamelist [
<!ELEMENT gamelist (game*)>

<!ELEMENT game (data,metadata)>

<!ELEMENT data EMPTY>
<!ATTLIST data
          name        CDATA #REQUIRED
          developer   CDATA #REQUIRED
          engine      CDATA #IMPLIED
          releasedate CDATA #IMPLIED    >

<!ELEMENT metadata EMPTY>
<!ATTLIST metadata
          hoursplayed    CDATA #IMPLIED
          lastplayed     CDATA #IMPLIED
          lastdataupdate CDATA #REQUIRED>
]>
<gamelist>
    <game>
        <data name="" developer="" engine="" releasedate=""/>
        <metadata hoursplayed="" lastplayed="" lastdataupdate=""/>
    </game>
</gamelist>

Вот несколько ссылок, которые могут помочь:

Основы XML (Начните здесь сначала.)

XML 1.0 (в частности, " Логические структуры".) (Альтернативно: XML 1.1 (" Логические структуры"))

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