下面是具有dtd架构的XML,但它没有验证,为什么? 我在Eclipse和http://www.xmlvalidation.com/index.php?id=1&L=0中检查了它:
<?xml version="1.0"?>
<!DOCTYPE person-list [
<!ELEMENT person-list (person*)>
<!ELEMENT person (first-name,second-name?,last-name,index-no,birth-date)>
<!ELEMENT first-name (#PCDATA)>
<!ELEMENT second-name (#PCDATA)>
<!ELEMENT last-name (#PCDATA)>
<!ELEMENT index-no (#PCDATA)>
<!ELEMENT birth-date (#PCDATA)>
<!ATTLIST person id ID #REQUIRED>
]>
<person-list>
<person id="1">
<first-name>ds</first-name>
<second-name>asd</second-name>
<last-name>asd</last-name>
<index-no>34</index-no>
<birth-date>1915-01-01</birth-date>
</person>
<person id="2">
<first-name>dfswsf</first-name>
<last-name>sdfsdf</last-name>
<index-no>23</index-no>
<birth-date>1916-02-02</birth-date>
</person>
</person-list>
答案 0 :(得分:1)
通过将id
的{{1}}属性定义为Student
,它不能以数字开头,因为它“必须与NAME制作相匹配”。它可以是“s1”和“s2”,但不是“1”和“2”。
有效性约束:ID
ID类型的值必须与Name生产相匹配。名称在XML文档中不得出现多次作为此类型的值;即,ID值必须唯一地标识带有它们的元素。
链接:
答案 1 :(得分:0)
问题是属性id的类型ID必须是有效的XML名称。其中一条规则说XML名称不能以数字开头。因此,在将ID更改为&#34; n1&#34;和&#34; n2&#34;,我猜你的文件是有效的。