Определение тегов 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 (" Логические структуры"))