Xml不验证

时间:2015-07-07 18:10:25

标签: xml

下面是具有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> 

2 个答案:

答案 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;,我猜你的文件是有效的。