2013-07-21 76 views
0

我在创建ELEMENT DTD时遇到了困难。XML中的元素DTD

这里是我的元素看起来像ELEMENT I (P*, L?)但验证它返回

Element I: validity error : Element I content does not follow the DTD, 
expecting (P*, L?), got (L P P) 

这里DTD后是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> 

回答

0

那是因为你对I声明说,后跟零个或多个P零或一个L。您最后的I元素的L之前的P

如果XML是正确的,则需要更改DTD。如果DTD是正确的,则必须更改XML。

一个可能的DTD变化是:

<!ELEMENT I ((P*,L?)|(L?,P*))> 
+0

我试过了。给出>>有效性错误:I的内容模型不是决定论者:((P *,L?)|(L?,P *)) – h4kl0rd

+0

我知道模型是非确定性的,但希望这不是一个问题为您的验证程序。你用什么来验证你的XML? –

+0

我正在使用xmllint – h4kl0rd