为什么这个 DTD 是递归的?
Why this DTD is recursive?
我得到了以下 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 >
有人问我:
This DTD is recursive! How does the recursion end?
额...我不明白为什么要递归?唯一递归的接缝是存在 0
或更多 section
(s).
This DTD is recursive!
我不会说 DTD 是递归的;我会说 section
的内容模型是递归的,因为它允许零个或多个子 section
元素。
How does the recursion end?
在 XML 实例中,当 section
不包含子 section
时,递归结束。由于子 section
元素不是必需的,因此它不会强制执行某种失控的递归,而您永远无法验证您的实例。
我得到了以下 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 >
有人问我:
This DTD is recursive! How does the recursion end?
额...我不明白为什么要递归?唯一递归的接缝是存在 0
或更多 section
(s).
This DTD is recursive!
我不会说 DTD 是递归的;我会说 section
的内容模型是递归的,因为它允许零个或多个子 section
元素。
How does the recursion end?
在 XML 实例中,当 section
不包含子 section
时,递归结束。由于子 section
元素不是必需的,因此它不会强制执行某种失控的递归,而您永远无法验证您的实例。