氧气中的DTD错误但Netbeans中没有这么混乱

时间:2014-02-14 15:39:27

标签: xml netbeans dtd xml-dtd oxygenxml

我正在尝试使用DTD创建一个XML文件,但在Netbeans中它并没有给我任何错误,但是在Oxygen XML中它说明了 意外元素“childone”。父元素类型的内容必须匹配“((c:childone,c:childtwo)|(childone,childtwo,childthree,childfour))”。

我的XML如下:

<rootelement>
   <c:childone></c:childone>
   <c:childtwo></c:childtwo>
   <childone></childone>
   <childtwo></childtwo>
   <childthree></childthree>
   <childfour></childfour>
</rootelement>

我的DTD如下:

<!ELEMENT rootelement ((c:childone,c:childtwo)|(childone,childtwo,childthree,childfour))>
<!ELEMENT c:childone (#PCDATA)>
<!ELEMENT c:childtwo (#PCDATA)>
<!ELEMENT childone (#PCDATA)>
<!ELEMENT childtwo (#PCDATA)>
<!ELEMENT childthree (#PCDATA)>
<!ELEMENT childfour (#PCDATA)>

我现在很困惑,请帮忙。希望我正确格式化。

1 个答案:

答案 0 :(得分:1)

DTD说<rootelement>的内容可以是两种形式之一;您的实际文档包含它们。选择一个,或更改DTD。

我怀疑Netbeans根本就没有验证,因此没有注意到这个问题。

顺便说一句,DTD非常不适合使用命名空间文档 - 我当然希望你将c:前缀绑定到命名空间! - 所以我强烈建议切换到XML Schema,它是DTD更强大的替代品。