我在创建ELEMENT DTD时遇到了困难。
以下是我的ELEMENT看起来像ELEMENT I (P*, L?)
,但在验证DTD后,它返回
Element I: validity error : Element I content does not follow the DTD,
expecting (P*, L?), got (L P P)
这是xml:
<I>
<P></P>
<I>
<I>
<P></P>
<P></P>
<I>
<I>
<P></P>
<L></L>
<I>
<I>
<L></L>
</I>
<I>
<L></L>
<P></P>
<P></P>
</I>
这是因为您对I
的声明表示零个或多个P
,然后是零个或一个L
。最后一个I
元素的L
位于P
之前。
如果XML是正确的,则需要更改DTD。如果DTD是正确的,您将不得不更改您的XML。
一个可能的DTD变化是:
<!ELEMENT I ((P*,L?)|(L?,P*))>
以下两者都允许:
<!ELEMENT I ((P|L)*)>
或者,如果您希望发生P
或L
中的一个,这应该会有所帮助:
<!ELEMENT I ((P|L)+)>