我获得了以下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)。
答案 0 :(得分:1)
这个DTD是递归的!
我不会说DTD是递归的;我会说section
的内容模型是递归的,因为它允许零个或多个子section
个元素。
递归如何结束?
当section
不包含子section
时,递归在XML实例中结束。由于子section
元素不是必需的,因此它不会强制进行某种失控的递归,而您永远不会让您的实例进行验证。