1

所以 - 我的 .dtd 文件中有这个声明:

<!ELEMENT some_node1 (some_node2?, 
                      some_node3, 
                      (some_node4 | some_node5)*)+> 

这里是什么+意思?

a) 该some_node2?, some_node3, (some_node4 | some_node5)*序列可以重复 1 次或多次?

b) 括号中的单个元素可以重复 1 次或多次?即 some_node3,some_node3,some_node3,some_node3, some_node5, some_node5 ?

4

1 回答 1

2

您标记为“a”的解释是正确的:序列可以出现一次或多次。

但是,您在“b”下给出的示例仍然合法:序列 < some_node3, some_node3, some_node3, some_node3, some_node5, some_node5 > 可以通过连接内容模型中给出的序列的四次出现来构造:

  1. some_node3(some_node2 出现 0 次,随后 some_node3 出现 1 次,然后 some_node4 和 some_node5 之间的选择出现 0 次)。
  2. some_node3(看上面)
  3. some_node3, some_node5, some_node5(some_node2 出现 0 次,紧接着 some_node3 出现 1 次,然后是 some_node4 和 some_node5 之间的选择出现 2 次)。

在您的解释“b”(如果我理解正确的话)下但不允许在“a”下(而不是 XML 规范)允许的序列示例是 some_node2、some_node2、some_node3。

于 2013-07-24T18:18:47.377 回答