首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写DTD来约束字符串中的多个IDREF值?

如何编写DTD来约束字符串中的多个IDREF值?
EN

Stack Overflow用户
提问于 2013-01-28 01:23:30
回答 3查看 1.7K关注 0票数 1
代码语言:javascript
复制
<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值组成的Prerequisites属性编写ATTLIST规范,比如"CS106B CS105A"?下面的方法会起作用吗?

代码语言:javascript
复制
<!ATTLIST Course Number ID #REQUIRED>
<!ATTLIST Course Prerequisites IDREF #IMPLIED>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-28 03:17:55

如果属性(Prerequisites)的值是ID值的列表,则可以使用IDREFS,该列表写成一个连接的字符串,其中包含一个空白字符作为分隔符,例如id1 id2

代码语言:javascript
复制
<ATTLIST Course Number ID #REQUIRED>
<ATTLIST Course Prerequisites IDREFS #IMPLIED>

一个人可以validate a DTD against an XML online

票数 2
EN

Stack Overflow用户

发布于 2013-01-28 05:09:43

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

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

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

示例:

代码语言:javascript
复制
<!ATTLIST Course 
          Number        ID     #REQUIRED
          Prerequisites IDREFS #IMPLIED>
票数 2
EN

Stack Overflow用户

发布于 2013-01-29 00:13:46

这是当前免费在线“DB入门”课程@ Stanford (http://class2go.stanford.edu/db/Winter2013/interactive_exercises/DTDExercises)的DTD练习之一。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14549998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档