DTD允许缺少标记

时间:2018-01-17 12:02:30

标签: xml dtd xml-dtd

这是我的DTD:

<!ELEMENT my-root (element1,element2+)> 

    <!ELEMENT element1 (#PCDATA)>

    <!ELEMENT element2 (element3,(element4?|element5+))>

    <!ELEMENT element3 (#PCDATA)>

    <!ELEMENT element5 (#PCDATA)>

    <!ELEMENT element4 (element6*)>

    <!ELEMENT element6 (element5*,element7*)>

    <!ELEMENT element7 (#PCDATA)>

这是我的XML文件:

<?xml version="1.0"?>
<!DOCTYPE my-root SYSTEM "my-root.dtd">

<my-root>

    <element1>a-location</element1>

    <element2>
        <element3>a-value</element3>
        <element4>
            <element6>
                <element5>test</element5>
                <element5>test2</element5>
                <element7>test3</element7>
            </element6>
        </element4>
    </element2>

    <element2>
        <element3>test4</element3>
        <element5>test5</element5>
        <element5>test6</element5>
    </element2>

    <element2>
        <element3>test7</element3>
    </element2>
</my-root>

我的问题是,即使最后一个element2中没有element5标记,它为什么有效。

或者更确切地说,我怎么能告诉DTD在element2标签内没有element4的情况下至少需要1个element5。

2 个答案:

答案 0 :(得分:1)

您可以要求<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> <link href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css" rel="stylesheet" /> <div> <label for="test0">This is checked and works</label> <input type="checkbox" class="checkbox" id="test0" value="yes" checked="checked" /> </div> <div id="guestsData"> <ul> <li><a href="#guest-0">Tab 0</a></li> <li><a href="#guest-1">Tab 1</a></li> <li><a href="#guest-2">Tab 2</a></li> <li><a href="#guest-3">Tab 3</a></li> </ul> <div id="guest-0"> <div> <label for="test1">This is checked and don't works!</label> <input type="checkbox" class="checkbox" id="test1" value="yes" checked="checked" /> </div> <div> <label for="test2">This is unchecked</label> <input type="checkbox" class="checkbox" id="test2" value="yes" /> </div> </div> <div id="guest-1"> Tab 1 content </div> <div id="guest-2"> Tab 2 content </div> <div id="guest-3"> Tab 3 content </div> </div>,因此它只有一个element4或一个或多个element4 ......

element5

答案 1 :(得分:0)

你可以使用逗号(,)而不是管道(|)符号:

<!ELEMENT element2 (element3,(element4?,element5+))>