我正在寻找一个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)>
]}
答案 0 :(得分:0)
这取决于你想要在语义上完成什么。通常,根据应用领域进行思考 - 而不是完全不透明的As Bs和Cs - 澄清要求。在这里,人们只能猜测要捕获的真实模式。例如,这会回答你的问题,但是它会解决你真正需要的问题吗?
<!ELEMENT A (B+)>
<!ELEMENT B (C,D+)+>
<!ELEMENT C (#PCDATA)>
<!ELEMENT D (#PCDATA)>