1

我正在查看这段 xml(在 DTD 文件内部):

<!ELEMENT entry ((node1?, node2?, node3?), node4, node5?, (node6 | node16)?,
(node17, node18?, (node19, node20)?)*, node21?, node22?, node23*, node24*,
((node25) | (node26?, node27?))?, node28*, node29?, node30*, node31*)>

使用圆括号的原因是什么(node1?, node2?, node3?)?这是否意味着 node1 和 node2 和 node3 是可选的?-> 但是它们不是已经添加了问号,因此它们不是可选的吗?

4

1 回答 1

2

括号用于分组。分组允许您将限定符放在模式的部分上,如使用(node6 | node16)?,或控制优先级,如使用(node25) | (node26?, node27?)。在 的情况下(node1?, node2?, node3?),括号是完全多余的。它的含义与 相同node1?, node2?, node3?

有时人们会添加额外的括号,因为他们认为这使事情更容易阅读,或者强调模式的相关部分。有时人们只是无缘无故地打字太多。

于 2013-07-23T20:19:27.773 回答