无法验证xml文档

时间:2014-10-07 20:39:49

标签: xml dtd

我应该为xml文档编写DTD,但有一个特定的部分让我循环。在EnrolledIn元素中,有字符数据,然后是课程元素。我尝试使用下面的DTD验证,但我一直收到错误

“错误:Element EnrolledIn内容不遵循DTD,期待(CDATA,课程+),得到(CDATA课程课程课程)

错误:Element EnrolledIn内容不遵循DTD,期待(CDATA,课程+),得到(CDATA课程)“。

我尝试过使用*和+,但没有成功。我正在使用Notepad ++ xml工具进行验证。

<!DOCTYPE Students [
<!ELEMENT Students (Student*)>
<!ELEMENT Student (LastName, MiddleInitial?, FirstName, EnrolledIn?)>
<!ELEMENT LastName (#PCDATA)>
<!ELEMENT FirstName (#PCDATA)>
<!ELEMENT MiddleInitial (#PCDATA)>
<!ELEMENT EnrolledIn (CDATA, Course+)>
<!ELEMENT Course (#PCDATA)>
]>




<Students>
    <Student>
        <LastName> Doe </LastName>
        <MiddleInitial>K.</MiddleInitial>
        <FirstName>John</FirstName>
        <EnrolledIn>
            Courses enrolled in:
            <Course>
                TCSS 445 – Database Systems Design
            </Course>
            <Course>
                TCSS 422 – Operating Systems
            </Course>
            <Course>
                TCSS 422 – Operating Systems
            </Course>
            <Course>
                TBUS 301 Quantitative Analysis for Business
            </Course>
        </EnrolledIn>
    </Student>
    <Student>
        <LastName> Smith </LastName>
        <FirstName>Amy</FirstName>
        <EnrolledIn>
            Courses enrolled in:
            <Course>
                TBUS 100 Introduction to Business
            </Course>
        </EnrolledIn>
    </Student>
    <Student>
        <LastName> Doe </LastName>
        <MiddleInitial> L. </MiddleInitial>
        <FirstName>Jane</FirstName>
    </Student>
</Students>

1 个答案:

答案 0 :(得分:1)

这称为混合内容模型,只有一种方法可以编写它。 (见这里:http://www.w3.org/TR/REC-xml/#sec-mixed-content

<!ELEMENT EnrolledIn (#PCDATA|Course)*>

您无法限制文本(#PCDATA)和Course元素的顺序。对于混合内容,模型中的所有内容(按任意顺序)始终为零或更多。