xml DTD正确性,为什么我们在声明XML节点时会在圆括号内使用圆括号?

时间:2013-07-23 18:15:23

标签: xml dtd xml-dtd

我正在看这片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是可选的? - &GT;但是,他们已经添加了问号,这不是可选的吗?

1 个答案:

答案 0 :(得分:2)

圆括号用于分组。与(node6 | node16)?一样,分组允许您对模式的某些部分放置限定符,或控制优先级,与(node25) | (node26?, node27?)一样。在(node1?, node2?, node3?)的情况下,括号完全是多余的。它与node1?, node2?, node3?意思相同。

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