Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML中的元素DTD_Xml_Dtd - Fatal编程技术网

XML中的元素DTD

XML中的元素DTD,xml,dtd,Xml,Dtd,我在创建元素DTD时遇到了困难 下面是我的元素的外观元素I(p*,L?,但在验证DTD后返回 Element I: validity error : Element I content does not follow the DTD, expecting (P*, L?), got (L P P) 以下是xml: <I> <P></P> <I> <I> <P></P> <P>

我在创建元素DTD时遇到了困难

下面是我的元素的外观
元素I(p*,L?
,但在验证DTD后返回

Element I: validity error : Element I content does not follow the DTD, 
expecting (P*, L?), got (L P P)
以下是xml:

<I>
    <P></P>
<I>
<I>
    <P></P>
    <P></P>
<I>
<I>
    <P></P>
    <L></L>
<I>
<I>
    <L></L>
</I>
<I>
    <L></L>
    <P></P>
    <P></P>
</I>


这是因为您对
I
的声明表示零个或多个
p
,后跟零个或一个
L
。最后一个
I
元素在
P
前面有
L

如果XML是正确的,则需要更改DTD。如果DTD正确,则必须更改XML

DTD的一个可能变化是:

<!ELEMENT I ((P*,L?)|(L?,P*))>

以下两项都允许:

<!ELEMENT I ((P|L)*)>

我也试过了。给出>>有效性错误:I的内容模型不是确定性的:((P*,L?)|(L?,P*)我知道模型是非确定性的,但希望这不会成为您的验证器的问题。您使用什么来验证您的xml?与Daniel Haley的建议相当的确定性:
<!ELEMENT I ((P|L)+)>