xml dtd - + quantier在这个元素中应用了什么?

时间:2013-07-24 16:14:00

标签: xml xml-parsing xml-dtd

所以 - 我的.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?

1 个答案:

答案 0 :(得分:2)

标注'a'的解释是正确的:序列可以出现一次或多次。

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

  1. some_node3(some_node2出现次数为零,然后出现some_node3,然后在some_node4和some_node5之间出现零次出现。)
  2. some_node3(见上文)
  3. some_node3, some_node5, some_node5(some_node2出现零次,后面恰好出现some_node3,然后在some_node4和some_node5之间出现两次选择)。
  4. 在您的解释'b'(如果我已正确理解)但不在'a'(而不是XML规范)下允许的序列的示例是some_node2,some_node2,some_node3。