我如何知道我创建的XML是否遵循DTD中的规则?
这是我的XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE HW SYSTEM "HW.dtd">
<A>
AA = "BAR"
AB = "FOO"
AC = "1"
<C>
<B/>
CA = "Name"
</C>
<D>Element</D>
</A>
这是我的DTD
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT A (B* |C+,D)>
<ATTLIST A
AA CDATA #REQUIRED
AB CDATA #REQUIRED
AC(0|1|2) #REQUIRED
>
<!ELEMENT B EMPTY>
<!ATTLIST C(B)>
<!ATTLIST C
CA CDATA #REQUIRED
>
<!ELEMENT D (#PCDATA)>
我的XML是否与DTD一致?
答案 0 :(得分:1)
您需要使用XML验证器
在线版本为http://www.xmlvalidation.com/,还有很多工具可以做到这一点
根据验证者的说法,您的DTD无效
我试图修复你的DTD,这是固定版本
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ELEMENT A (B* | (C+,D))>
<!ATTLIST A
AA CDATA #REQUIRED
AB CDATA #REQUIRED
AC (0|1|2) #REQUIRED
>
<!ELEMENT B EMPTY>
<!ELEMENT C EMPTY>
<!ATTLIST C
CA CDATA #REQUIRED
>
<!ELEMENT D (#PCDATA)>
您发布的DTD问题是:
据我所知,您需要C +周围的括号,D上面的<ATTLIST
也不正确,因为您指定了<!ATTLIST
的属性列表注意!失踪了。
你的DTD还有
<!ELEMENT B EMPTY>
<!ATTLIST C
CA CDATA #REQUIRED
>
当您从元素C <!ATTLIST C
定义属性列表但未在DTD中定义元素C时,验证失败,因此我将其更改为
<!ELEMENT C EMPTY>
<!ATTLIST C
CA CDATA #REQUIRED
>
这使您的DTD有效
你的XML在很多方面都是错误的
例如您的DTD指定
<!ATTLIST A
AA CDATA #REQUIRED
AB CDATA #REQUIRED
AC (0|1|2) #REQUIRED
>
这意味着元素A必须具有AA BB AC属性,因为它们是必需的,AC属性必须为0或1或2
你已经放
了<A>
AA = "BAR"
AB = "FOO"
AC = "1"
未在元素A中指定XML属性,以指定它应该是
的属性<A AA="BAR" AB="FOO" AC="1">
这可以帮助你做功课
这是一个DTD教程的链接http://www.quackit.com/xml/tutorial/dtd_introduction.cfm,这可以帮助您创建一个验证它的XML文档