XML文件
<?xml version = "1.0" encoding = "gb2312"?>
<Email>
<Inbox>
<EmailItem Status = "已回复">
<From>[email protected]</From>
<Subject>请教的 XML 问题</Subject>
<Received>2002-05-06 09:00:09</Received>
<Content>XSL 与 CSS 的区别是什么?</Content>
<Size>84.6K</Size>
</EmailItem>
<EmailItem Status = "已读">
<From>[email protected]</From>
<Subject>会议通知</Subject>
<Received>2002-05-06 12:10:09</Received>
<Content>今天下午五点半开会,请准时参加。</Content>
<Size>184.2K</Size>
</EmailItem>
</Inbox>
<Outbox>
<EmailItem>
<To>[email protected]</To>
<Subject>学习 XML 的好地方</Subject>
<Send>2002-05-06 13:10:20</Send>
<Content>XML 中国论坛 http://www.xml.net.cn</Content>
<Size>32K</Size>
</EmailItem>
</Outbox>
</Email>
我根据这个XML写的DTD
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT EMAIL (Inbox,Outbox) >
<!ELEMENT Inbox (EmailItem*)>
<!ELEMENT Outbox (EmailItem)>
<!ELEMENT EmailItem ((From|To),Subject,(Received|Send),Content,Size) >
<!ATTLIST EmailItem Status CDATA #REQUIRED >
<!ELEMENT From (#PCDATA) >
<!ELEMENT To (#PCDATA) >
<!ELEMENT Subject (#PCDATA) >
<!ELEMENT Received (#PCDATA) >
<!ELEMENT Send (#PCDATA) >
<!ELEMENT Content (#PCDATA) >
<!ELEMENT Size (#PCDATA) >
到底哪有问题啊
<?xml version = "1.0" encoding = "gb2312"?>
<Email>
<Inbox>
<EmailItem Status = "已回复">
<From>[email protected]</From>
<Subject>请教的 XML 问题</Subject>
<Received>2002-05-06 09:00:09</Received>
<Content>XSL 与 CSS 的区别是什么?</Content>
<Size>84.6K</Size>
</EmailItem>
<EmailItem Status = "已读">
<From>[email protected]</From>
<Subject>会议通知</Subject>
<Received>2002-05-06 12:10:09</Received>
<Content>今天下午五点半开会,请准时参加。</Content>
<Size>184.2K</Size>
</EmailItem>
</Inbox>
<Outbox>
<EmailItem>
<To>[email protected]</To>
<Subject>学习 XML 的好地方</Subject>
<Send>2002-05-06 13:10:20</Send>
<Content>XML 中国论坛 http://www.xml.net.cn</Content>
<Size>32K</Size>
</EmailItem>
</Outbox>
</Email>
我根据这个XML写的DTD
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT EMAIL (Inbox,Outbox) >
<!ELEMENT Inbox (EmailItem*)>
<!ELEMENT Outbox (EmailItem)>
<!ELEMENT EmailItem ((From|To),Subject,(Received|Send),Content,Size) >
<!ATTLIST EmailItem Status CDATA #REQUIRED >
<!ELEMENT From (#PCDATA) >
<!ELEMENT To (#PCDATA) >
<!ELEMENT Subject (#PCDATA) >
<!ELEMENT Received (#PCDATA) >
<!ELEMENT Send (#PCDATA) >
<!ELEMENT Content (#PCDATA) >
<!ELEMENT Size (#PCDATA) >
到底哪有问题啊
不过你少了个
<!DOCTYPE Email [
这里面写具体的DTD规则
]>
避免出错。
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT Email (Inbox,Outbox) >
<!ELEMENT Inbox (EmailItem*)>
<!ELEMENT Outbox (EmailItem)>
<!ELEMENT EmailItem ((From|To),Subject,(Received|Send),Content,Size)>
<!ATTLIST EmailItem Status CDATA #IMPLIED>
<!ELEMENT From (#PCDATA) >
<!ELEMENT To (#PCDATA) >
<!ELEMENT Subject (#PCDATA) >
<!ELEMENT Received (#PCDATA) >
<!ELEMENT Send (#PCDATA) >
<!ELEMENT Content (#PCDATA) >
<!ELEMENT Size (#PCDATA) >
你的错误有三:
1、xml是区分大小写的。你的DTD里的Email写成了EMAIL
2、EmailItem的属性不是必需的(#REQUIRED),它应该是可选的(#IMPLIED)
3、<!ELEMENT EmailItem ((From ¦To),Subject,(Received ¦Send),Content,Size) >
这条语句的应该是<!ELEMENT EmailItem ((From|To),Subject,(Received|Send),Content,Size)>
From和Received后面没空格的。
或者也可以把DTD写在xml里,方法是<!DOCTYPE Email[
your DTD....
]>