2013-07-21 81 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