考虑到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>
解析器会给您任何错误消息吗?如果没有,就可以。
DTD假定元素名称具有全局作用域:您只能为给定的元素名称定义一个内容模型,无论它出现在什么上下文中。如果要根据上下文使用不同的内容模型,请使用更现代的架构语言,例如XSD或RelaxNG。