我需要外部DTD来验证XML文件,并且“选择”,“电话”和“电话”不断出现错误。我知道这与我的元素顺序有关,但我无法弄清楚。
我编辑了。元素手机和手机,我相信它现在正在验证
DTD
[
<!ELEMENT smartphones (choices+)>
<!ELEMENT choices (phones,phone,name,company,price,storage,description)>
<!ATTLIST choices phones NMTOKENS #REQUIRED>
<!ELEMENT phones (phone)>
<!ATTLIST phones CDATA #REQUIRED>
<!ELEMENT phone (name,company,price,storage,description)>
<!ATTLIST phone NMTOKENS #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT storage (#PCDATA)>
<!ELEMENT description (#PCDATA)>
]>
<!-- XML -->
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE smartphones SYSTEM "Vocab1DTD.dtd">
<smartphones>
<choices>Smart Phones
<phones>
<phone>
<name> </name>
<company> </company>
<price> </price>
<storage> </storage>
<description> </description>
</phone>
</phones>
</choices>
</smartphones>
答案 0 :(得分:0)
这是一个更新的DTD,可直接用于您的XML。
对XML的评论很少:在choices
中将“智能手机”作为文本并没有多大意义; choices
是smartphones
的子项可以推断出这一点。同样,choices
和phones
似乎是多余的;拥有两者的目的是什么?
如果您对我所做的更改有疑问,请告诉我。
Vocab1DTD.dtd
<!ELEMENT smartphones (choices+)>
<!ELEMENT choices (#PCDATA|phones)*>
<!ELEMENT phones (phone+)>
<!ELEMENT phone (name,company,price,storage,description)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT storage (#PCDATA)>
<!ELEMENT description (#PCDATA)>