2个简单的DTD声明之间的区别

时间:2013-08-19 13:36:48

标签: xml dtd xml-dtd

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

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

<!ELEMENT all (book, dvd)+>

2 个答案:

答案 0 :(得分:1)

内容模型(book +,dvd +)匹配一系列元素:首先,一个或多个书元素(即book+),然后(即,)一个或多个dvd元素(即{ {1}})。因此,以下内容匹配此内容模型:

  1. dvd+
  2. <book/><dvd/>
  3. <book/><book/><book/><dvd/>
  4. <book/><dvd/><dvd/><dvd/><dvd/><dvd/>
  5. 内容模型(book,dvd)+匹配一个或多个序列的出现,该序列由一本书后跟一个DVD组成。所以以下匹配:

    1. <book/><book/><book/><book/><dvd/><dvd/>
    2. <book/><dvd/>
    3. <book/><dvd/><book/><dvd/>
    4. <book/><dvd/><book/><dvd/><book/><dvd/>
    5. 不同之处在于,在第一个表达式中,两个+运算符适用于单个元素名称book和dvd;在第二个中,+适用于序列(book,dvd)作为一个整体。

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

答案 1 :(得分:0)

了解dtd的知识:

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

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