2013-07-23 2 views
1

Я смотрю на этом куске XML (внутри DTD-файл):xml Правильность DTD, почему мы должны использовать круглые фигурные скобки внутри круглых фигурных скобок при объявлении узла XML?

<!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 являются необязательными? -> но разве они не являются необязательными из-за того, что они уже добавили вопросительный знак?

ответ

2

Скобки используются для группировки. Группировка позволяет поместить квалификаторы на части шаблонов, например (node6 | node16)?, или для управления приоритетом, как с (node25) | (node26?, node27?). В случае (node1?, node2?, node3?) скобки являются полностью избыточными. Это означает то же, что и node1?, node2?, node3?.

Иногда люди добавляют дополнительные скобки, потому что считают, что это облегчает чтение или подчеркивает связанные фрагменты шаблона. Иногда люди просто набирают слишком много причин.

+0

спасибо! Я думал что-то в этом роде. – user2568737