1
<Course Number="CS105A" Prerequisites="CS101A" Instructors="JC XX" Enrollment="610">
  <Title>Programming XXX</Title>
  <Description>Abstraction and its relation to programming.</Description>
</Course>

<Course Number="CS106B" Prerequisites="CS106A" Instructors="JC ER" Enrollment="620">
  <Title>Programming Abstractions</Title>
  <Description>Abstraction and its relation to programming.</Description>
</Course>

<Course Number="CS107" Prerequisites="CS106B CS105A" Instructors="JZ" Enrollment="500">
  <Title>Computer Organization and Systems</Title>
  <Description>Introduction to the fundamental concepts of computer systems.</Description>
</Course>

如何编写可以由多个 ID 值组成ATTLIST的属性的规范,例如?下面的工作吗?Prerequisites"CS106B CS105A"

<!ATTLIST Course Number ID #REQUIRED>
<!ATTLIST Course Prerequisites IDREF #IMPLIED>
4

3 回答 3

2

IDREFS如果属性 ( Prerequisites) 的ID值是写成以空格字符作为分隔符的连接字符串的值列表,则可以使用,即id1 id2

<ATTLIST Course Number ID #REQUIRED>
<ATTLIST Course Prerequisites IDREFS #IMPLIED>

可以根据 XML 在线验证 DTD

于 2013-01-27T19:17:55.467 回答
2

就像孟露说的,你应该使用IDREFS(不同的链接)。

您也不需要为ATTLIST元素中的每个属性都有单独的属性声明 ( )。

您的声明中还遗漏了一个非常重要的内容!

例子:

<!ATTLIST Course 
          Number        ID     #REQUIRED
          Prerequisites IDREFS #IMPLIED>
于 2013-01-27T21:09:43.400 回答
0

这是当前免费在线“数据库简介”课程@斯坦福 ( http://class2go.stanford.edu/db/Winter2013/interactive_exercises/DTDExercises ) 的 DTD 练习之一。

正如所指出的,自己运行它很容易。例如,我针对 xmllint 运行它,如果我的 DTD 没有通过,xmllint 会告诉我。我遵循错误线索直到它通过,然后将其作为我对这个问题的答案(引用集中的#3)。

于 2013-01-28T16:13:45.937 回答