0

有人可以解释以下 DTD 语句之间的区别吗?

<!ELEMENT all (book+, dvd+)>

<!ELEMENT all (book, dvd)+>
4

2 回答 2

1

内容模型 (book+, dvd+) 匹配一系列元素:首先,一个或多个 book 元素(即book+),然后(即,)一个或多个 dvd 元素(即dvd+)。所以以下匹配这个内容模型:

  1. <book/><dvd/>
  2. <book/><book/><book/><dvd/>
  3. <book/><dvd/><dvd/><dvd/><dvd/><dvd/>
  4. <book/><book/><book/><book/><dvd/><dvd/>

等等

内容模型 (book, dvd)+ 匹配由一本书和一个 dvd 组成的序列的一次或多次出现。所以下面匹配它:

  1. <book/><dvd/>
  2. <book/><dvd/><book/><dvd/>
  3. <book/><dvd/><book/><dvd/><book/><dvd/>
  4. <book/><dvd/><book/><dvd/><book/><dvd/><book/><dvd/>

等等

不同之处在于,在第一个表达式中,两个 + 运算符适用于单个元素名称 book 和 dvd;在第二个中,+ 适用于整个序列 (book, dvd)。

请注意,每个列表中的第一个示例在两种内容模型下都是合法的,而其他的都不合法。

于 2013-08-19T19:00:29.417 回答
0

对 dtd 的了解为 0:

我会说第一个应该包含至少 1 本书1 个 dvd。但可能包含许多书籍和/或 DVD。

第二个包含应包含至少 1 本书1 dvd。但可能包含许多书籍和/或 DVD。

于 2013-08-19T13:42:35.557 回答