2015-11-25 5 views
0

Итак, я разрабатывал XML-файл на основе определенного DTD. Логика такова:Ошибки DTD-XML

Category >> Books(can have many entries) >>Author[required], Price[required], Description, Image) 

Вот DTD генерируется:

<!ELEMENT CATAGORY (PRODUCT+)> 
<!ELEMENT PRODUCT 
(NAME,PRICE,DESCRIPTION*,PICTURE*)> 
<!ATTLIST PRODUCT 
NAME CDATA #REQUIRED 
PRICE CDATA #REQUIRED 
DESCRIPTION CDATA #IMPLIED 
PICTURE CDATA #IMPLIED 
CATEGORY (BOOKS|GADGETS|OTHERS) "BOOKS" 
AUTHOR CDATA #REQUIRED 
ISBN CDATA #IMPLIED 
INVENTORY (InStock|Backordered|Discontinued) "InStock"> 

Однако, я не могу написать правильный XML. Я написал так:

<CATAGORY> 
    <PRODUCT NAME="XML BOOK" AUTHOR="XML GENIUS" CATEGORY="BOOKS" DESCRIPTION="BRILLIANT XML BOOK." INVENTORY="InStock" ISBN="653725327" PRICE="36.99" PICTURE=""/> 
    <PRODUCT NAME="XML MASTERS" AUTHOR="XML TEACHER" CATEGORY="BOOKS" DESCRIPTION="" INVENTORY="InStock" ISBN="" PICTURE="" PRICE="23.99"/> 
</CATAGORY> 

Я получаю следующее сообщение об ошибке. Любая помощь приветствуется.

Content model of element <PRODUCT> requires further child elements. 
    Error location: CATAGORY/PRODUCT 
    Details 
     VC: Element Valid (2): Content model of element <PRODUCT> requires further child elements. 
+0

Вы не моделируются дочерние элементы 'name',' PRICE' ... – Boldewyn

+0

@Boldewyn Я действительно новичок в XML, что вы имеете в виду модель? Я хочу, чтобы они были такими же простыми, как одна строка текста, что мне нужно добавить? Благодарю. –

+0

Это означает, что вы сказали, что 'PRODUCT' нуждается в дочернем' NAME', но вы никогда не определяли что-то по ''. – Boldewyn

ответ

0

Определение PRODUCT,

<!ELEMENT PRODUCT 
    (NAME,PRICE,DESCRIPTION*,PICTURE*)> 

говорит, что <PRODUCT> должен содержать один <NAME> элемент, один <PRICE> элемент и так далее. Но из ATTLIST и вашего примера кода вы хотите использовать атрибуты. Так просто изменить определение для

<!ELEMENT PRODUCT EMPTY> 
Смежные вопросы