【问题标题】:Xml doesn't validateXML 不验证
【发布时间】:2016-07-14 00:16:34
【问题描述】:

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

【问题讨论】:

标签: xml


【解决方案1】:

通过将Studentid 属性定义为ID,它不能以数字开头,因为它“必须匹配NAME 产生式”。它可以是“s1”和“s2”,但不能是“1”和“2”。

有效性约束:ID

ID 类型的值必须与名称产生式相匹配。一个名称在 XML 文档中不能多次作为这种类型的值出现;即,ID 值必须唯一标识承载它们的元素。

链接:

【讨论】:

  • 如果答案对您有所帮助,请考虑单击答案旁边的向上箭头。如果答案解决了您的问题,请单击向下箭头下方的复选标记。这些事情可以帮助其他人知道你的问题已经解决,哪些答案有帮助,你的声誉也会提高。
【解决方案2】:

问题在于属性 id 的类型 ID 必须是有效的 XML 名称。其中一条规则规定 XML 名称不能以数字开头。因此,在将 id 更改为“n1”和“n2”后,我猜您的文档将是有效的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2014-06-08
    • 2012-10-23
    相关资源
    最近更新 更多