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) >
到底哪有问题啊

解决方案 »

  1.   

       你的xml我就不具体看了 
       不过你少了个
       <!DOCTYPE Email [
       这里面写具体的DTD规则
       ]>
      

  2.   

    告诉楼主  根据XML写DTD最好使用转化工具。
    避免出错。
      

  3.   


    <?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后面没空格的。
      

  4.   

    噢,还有你要是在外部引用这个DTD的话,应该在xml第二行加上<!DOCTYPE Email SYSTEM "1.dtd">,其中1.dtd是这个dtd的名字。
    或者也可以把DTD写在xml里,方法是<!DOCTYPE Email[
    your DTD....
    ]>