0

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

1 回答 1

0

这取决于你想要在语义上完成什么。通常,从应用程序领域的角度思考——而不是完全不透明的 B 和 C——可以阐明需求。在这里,人们只能猜测要捕获的真实模式。例如,这将回答您的问题,但它会解决您真正需要的问题吗?

<!ELEMENT A (B+)>
<!ELEMENT B (C,D+)+>
<!ELEMENT C (#PCDATA)>
<!ELEMENT D (#PCDATA)>
于 2014-06-22T15:06:19.550 回答