我正在看这片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;但是,他们已经添加了问号,这不是可选的吗?
答案 0 :(得分:2)
圆括号用于分组。与(node6 | node16)?
一样,分组允许您对模式的某些部分放置限定符,或控制优先级,与(node25) | (node26?, node27?)
一样。在(node1?, node2?, node3?)
的情况下,括号完全是多余的。它与node1?, node2?, node3?
意思相同。
有时人们会添加额外的括号,因为他们认为这会使事情更容易阅读,或者强调模式的相关部分。有时人们只是因为没有充分理由而打字太多。