2014-01-23 70 views
0

我正在尋找能夠使第一個XML文檔有效並且第二個無效的DTD(如果可能的話)。哪個DTD會使第一個XML文檔有效,第二個無效?

首先XML:

<A> 
    <B> 
     <C>bla</C> 
     <D>bla</D> 
     <C>bla</C> 
     <D>bla</D> 
     <D>bla</D> 
    </B> 
    <B> 
     <C>bla</C> 
     <D>bla</D> 
     <C>bla</C> 
     <D>bla</D> 
    </B> 
</A> 

二XML:

<A> 
    <B> 
     <C>bla</C> 
     <D>bla</D> 
     <C>bla</C> 
     <C>bla</C> 
     <D>bla</D> 
     <D>bla</D> 
    </B> 
    <B> 
     <C>bla</C> 
     <D>bla</D> 
     <C>bla</C> 
     <D>bla</D> 
    </B> 
</A> 

我這有一個,但不排除第二:

<!DOCTYPE A [ 
<!ELEMENT A (B+)> 
<!ELEMENT B (C|D)+> 
<!ELEMENT C (#PCDATA)> 
<!ELEMENT D (#PCDATA)> 
]} 
+2

也許'<!ELEMENT B((C,D)+,D *)>'? –

回答

0

這取決於什麼你想完成語義。通常,從應用領域的角度思考 - 而不是完全不透明的B和C - 澄清了需求。在這裏,人們只能猜測真實的模式被捕獲。例如,這會回答你的問題,但它會解決你真正需要的嗎?

<!ELEMENT A (B+)> 
<!ELEMENT B (C,D+)+> 
<!ELEMENT C (#PCDATA)> 
<!ELEMENT D (#PCDATA)> 
相關問題