XML中的元素DTD

时间:2013-07-21 00:23:29

标签: xml dtd xml-dtd

我在创建ELEMENT DTD时遇到了困难。

这是我的ELEMENT看起来像ELEMENT 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>

2 个答案:

答案 0 :(得分:0)

这是因为您对I的声明是零或更多P 后跟零或一L。您的上一个I元素在L之前有P

如果XML正确,您需要更改DTD。如果DTD正确,您将不得不更改XML。

一个可能的DTD变化是:

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

答案 1 :(得分:0)

以下允许同时执行以下操作:

structure(list(Species = c(13359L, 12867L, 11646L, 13214L, 11413L, 
3413L, 13249L, 11374L, 13267L, 2059L, 12941L, 13123L, 1904L, 
13252L, 12915L, 12749L, 11577L, 995L), North = c(0.94, 0, 0.9, 
0, 0.88, 0.87, 0, 0, 0.86, 0, 0.84, 0.83, 0.83, 0, 0, 0.82, 0.82, 
0.81), South = c(0, 0.92, 0.9, 0, 0.88, 0, 0.87, 0.87, 0.86, 
0.86, 0.84, 0.83, 0, 0.82, 0, 0.82, 0.82, 0), West = c(0, 0.92, 
0.9, 0, 0.88, 0.87, 0.87, 0.87, 0.86, 0.86, 0.84, 0, 0.83, 0.82, 
0, 0.82, 0.82, 0), East = c(0, 0.92, 0.9, 0, 0, 0.87, 0.87, 0.87, 
0, 0.86, 0.84, 0, 0, 0.82, 0, 0.82, 0.82, 0), North.east = c(0, 
0.92, 0.9, 0, 0.88, 0.87, 0.87, 0.87, 0.86, 0.86, 0, 0.83, 0, 
0.82, 0, 0, 0.82, 0.81), Northwest = c(0, 0, 0, 0.88, 0, 0.87, 
0.87, 0.87, 0, 0.86, 0.84, 0, 0, 0.82, 0, 0, 0, 0), South.west = c(0, 
0.92, 0.9, 0.88, 0.88, 0, 0.87, 0, 0.86, 0.86, 0.84, 0.83, 0, 
0, 0, 0.82, 0.82, 0), South.east = c(0, 0.92, 0.9, 0, 0.88, 0, 
0, 0.87, 0.86, 0, 0.84, 0.83, 0.83, 0, 0, 0.82, 0.82, 0)), class = "data.frame", row.names = c(NA, 
-18L))

或者,如果您希望要求Thread.Sleep(new Random().Next(20,21));<!ELEMENT I ((P|L)*)> 之一出现,这应该会有所帮助:

P