为什么这个DTD是递归的?

时间:2016-01-18 15:49:31

标签: dtd xml-dtd

我获得了以下DTD:

<!ELEMENT book (title, author+, section+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT section (title, (p | figure | section)* )>
<!ATTLIST section
id ID #IMPLIED
difficulty CDATA #IMPLIED>
<!ELEMENT p (#PCDATA)>
<!ELEMENT figure (title, image)>
<!ATTLIST figure
width CDATA #REQUIRED
height CDATA #REQUIRED >
<!ELEMENT image EMPTY>
<!ATTLIST image
source CDATA #REQUIRED >

我被问到:

  

这个DTD是递归的!递归如何结束?

嗯......我不明白它为什么会递归?接触递归的唯一事情是存在0或更多section(s)。

1 个答案:

答案 0 :(得分:1)

  

这个DTD是递归的!

我不会说DTD是递归的;我会说section的内容模型是递归的,因为它允许零个或多个子section个元素。

  

递归如何结束?

section不包含子section时,递归在XML实例中结束。由于子section元素不是必需的,因此它不会强制进行某种失控的递归,而您永远不会让您的实例进行验证。