【问题标题】:Difference between 2 simple DTD declarations2 个简单的 DTD 声明之间的区别
【发布时间】:2013-08-27 00:12:15
【问题描述】:

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

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

<!ELEMENT all (book, dvd)+>

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

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

    1. &lt;book/&gt;&lt;dvd/&gt;
    2. &lt;book/&gt;&lt;book/&gt;&lt;book/&gt;&lt;dvd/&gt;
    3. &lt;book/&gt;&lt;dvd/&gt;&lt;dvd/&gt;&lt;dvd/&gt;&lt;dvd/&gt;&lt;dvd/&gt;
    4. &lt;book/&gt;&lt;book/&gt;&lt;book/&gt;&lt;book/&gt;&lt;dvd/&gt;&lt;dvd/&gt;

    等等

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

    1. &lt;book/&gt;&lt;dvd/&gt;
    2. &lt;book/&gt;&lt;dvd/&gt;&lt;book/&gt;&lt;dvd/&gt;
    3. &lt;book/&gt;&lt;dvd/&gt;&lt;book/&gt;&lt;dvd/&gt;&lt;book/&gt;&lt;dvd/&gt;
    4. &lt;book/&gt;&lt;dvd/&gt;&lt;book/&gt;&lt;dvd/&gt;&lt;book/&gt;&lt;dvd/&gt;&lt;book/&gt;&lt;dvd/&gt;

    等等

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

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

    【讨论】:

      【解决方案2】:

      对dtd的了解为0:

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

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

      【讨论】:

      • 对不起,错误的答案。两者都必须包含至少一本书和至少一个 dvd。
      • @C.M.Sperberg-McQueen 你确定吗?唔。既然你这么说,那好吧。这个理论怎么样:第一个应该包含至少一本书和一张 DVD。第二个也是,但 DVD 的数量应该和书籍一样多?
      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 2015-07-24
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2012-02-08
      相关资源
      最近更新 更多