此DTD有效吗?

问题描述 投票:0回答:1

考虑到XML中嵌套了多个'name'元素,我不确定它是否有效。我应该使用多个名称元素来描述吗?

我错过了一个约束吗?我不确定我在这里使用NMTOKEN vs CDATA是否正确。我非常确定PCDATA。

<?xml version="1.0" standalone="yes"?>

   <!DOCTYPE teachers [
    <!ELEMENT teachers (teacher+)>
    <!ELEMENT teacher (name,course+)>

    <!ATTLIST teacher 
        joiningDate NMTOKEN #REQUIRED
        jobRole CDATA #REQUIRED
        >

    <!ELEMENT name (#PCDATA)>
    <!ELEMENT course (name, submodule+)>
    <!ELEMENT submodule (name, year+)>
    <!ELEMENT year (#PCDATA)>
    ]>


   <teachers>
      <teacher joiningDate="2018" jobRole="Professor">
         <name>John Smith</name>
         <course>
            <name>Intro to Psych 1</name>
            <submodule>
               <name>The Mind</name>
               <year>2018-2019</year>
               <year>2019-2020</year>
            </submodule>
         </course>
         <course>
            <name>Econ 101</name>
            <submodule>
               <name>Macro</name>
               <year>2018-2019</year>
               <year>2019-2020</year>
            </submodule>
         </course>
      </teacher>
   </teachers>
xml validation dtd
1个回答
0
投票

解析器会给您任何错误消息吗?如果没有,就可以。

DTD假定元素名称具有全局作用域:您只能为给定的元素名称定义一个内容模型,无论它出现在什么上下文中。如果要根据上下文使用不同的内容模型,请使用更现代的架构语言,例如XSD或RelaxNG。

© www.soinside.com 2019 - 2024. All rights reserved.