【问题标题】:Which DTD would make the first XML document valid and the second invalid?哪个 DTD 会使第一个 XML 文档有效而第二个无效?
【发布时间】:2014-02-14 02:54:03
【问题描述】:

如果可能的话,我正在寻找一个 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)>
]}

【问题讨论】:

  • 可能是&lt;!ELEMENT B ((C,D)+,D*)&gt;?

标签: xml dtd sgml


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    相关资源
    最近更新 更多