哪个DTD会使第一个XML文档有效而第二个无效?

时间:2014-01-23 13:56:15

标签: xml dtd sgml

我正在寻找一个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)>
]}

1 个答案:

答案 0 :(得分:0)

这取决于你想要在语义上完成什么。通常,根据应用领域进行思考 - 而不是完全不透明的As Bs和Cs - 澄清要求。在这里,人们只能猜测要捕获的真实模式。例如,这会回答你的问题,但是它会解决你真正需要的问题吗?

<!ELEMENT A (B+)>
<!ELEMENT B (C,D+)+>
<!ELEMENT C (#PCDATA)>
<!ELEMENT D (#PCDATA)>