以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DTD/XML Schema 』  (http://bbs.xml.org.cn/list.asp?boardid=23)
----  <求助>一个关于DTD的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=28313)


--  作者:yesteve
--  发布时间:3/8/2006 11:12:00 PM

--  <求助>一个关于DTD的问题
帮我看看我的DTD错误在哪里并修改它
外部DTD代码是:
<!ELEMENT account         (deposit,payment)+>
     <!ELEMENT deposit         (from,amount,date,description?)>
     <!ELEMENT payment         (to,amount,data,description?)>
     <!ELEMENT from            (#PCDATA)>
     <!ELEMENT to              (#PCDATA)>
     <!ELEMENT amount            (#PCDATA)>
     <!ELEMENT date            (#PCDATA)>
     <!ELEMENT description      (#PCDATA)>
      <!ATTLIST account
                    name CDATA #FIXED "Harold Roy"
                    number ID #FIXED "899-24390"
                    bank CDATA #FIXED "Central City Bank"  >
      <!ATTLIST deposit type (direct,cash,transfer,cheque) #REQUIRED>
      <!ATTLIST payment
                  payment (atm,cheque,transfer,withdrawal) #REQUIRED
                  chequeNum ID #IMPLIED
                   >
      <!ATTLIST from category income #REQUIRED>
      <!ATTLIST to category (utilities|entertainment|food|clothing|cash|other) #REQUIRED>
      <!ENTITY employer "Net World">

XML代码是:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<!DOCTYPE account
SYSTEM "account.dtd">
    
          
<account>
   <deposit type="direct">
      <from  category="Income">Net World</from>
      <amount>1240.50</amount>
      <date>24/8/2004</date>
      <description>Paycheque</description>
   </deposit>

   <payment type="cheque" chequeNum="C1210">
      <to category="other">Hank's Hardware</to>
      <amount>29.15</amount>
      <date>24/8/2004</date>
      <description>Drill kit</description>
   </payment>

   <payment type="cheque" chequeNum="C1210">
      <to category="food">Food Mart</to>
      <amount>149.51</amount>
      <date>25/8/2004</date>
      <description>Groceries</description>
   </payment>

   <payment type="cheque" chequeNum="C1212">
      <to category="other">Citgo</to>
      <amount>22.50</amount>
      <date>25/8/2004</date>
      <description>Petrol</description>
   </payment>

   <payment type="cheques" chequeNum="C1213">
      <to category="food">Pizza Now</to>
      <amount>33.24</amount>
      <date>28/8/2004</date>
      <description>Dinner</description>
   </payment>

   <payment type="cheque" chequeNum="C1214">
      <to category="utilities">Central Electric</to>
      <amount>94.85</amount>
      <date>29/8/2004</date>
      <description>Electric Bill</description>
   </payment>

   <payment type="withdrawal">
      <to category="cash">cash</to>
      <amount>200</amount>
      <date>29/8/2004</date>
      <description>ATM withdrawal</description>
   </payment>

   <payment type="cheque" chequeNum="C1215">
      <to category="clothing">Styling</to>
      <amount>172.50</amount>
      <date>30/8/2004</date>
      <description>New pants, shirt</description>
   </payment>

   <payment type="cheque" chequeNum="C1216">
      <to category="FOOD">Food Mart</to>
      <amount>89.11</amount>
      <date>30/8/2004</date>
      <description>Groceries</description>
   </payment>

   <deposit type="transfer">
      <from category="savings">Saving Account</from>
      <amount>300</amount>
      <date>1/9/2004</date>
   </deposit>

   <payment type="cheque" chequeNum="C1217">
      <to category="entertainment">Ticket Source</to>
      <amount>115.95</amount>
      <date>3/9/2004</date>
      <description>Tickets for the Jazz Concert</description>
   </payment>
</account>


--  作者:平常道
--  发布时间:3/9/2006 10:48:00 AM

--  
我看了,修改了一下,验证通过
//DTD
<?xml version="1.0" encoding="GB2312"?>

<!ELEMENT account   (deposit,payment+)+>
<!ELEMENT deposit         (from,amount,date,description?)>
<!ELEMENT payment         (to,amount,date,description?)>
<!ELEMENT from            (#PCDATA)>
<!ELEMENT to              (#PCDATA)>
<!ELEMENT amount            (#PCDATA)>
<!ELEMENT date            (#PCDATA)>
<!ELEMENT description      (#PCDATA)>

<!--#FIXED "899-24390" -->

<!ATTLIST account
                    name CDATA #FIXED "Harold Roy"
                    number CDATA #FIXED "899-24390"      
                    bank CDATA #FIXED "Central City Bank"  >

<!ATTLIST deposit type (direct | cash | transfer | cheque) #REQUIRED>

<!ATTLIST payment
                  type (atm | cheque | transfer | withdrawal) #REQUIRED
                  chequeNum ID #IMPLIED
                   >
<!ATTLIST from category (income | savings) #REQUIRED>
<!ATTLIST to category (utilities|entertainment|food|clothing|cash|other) #REQUIRED>
<!ENTITY employer "Net World">

//XML
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE account SYSTEM "account.dtd">
          
<account>
   <deposit type="direct">
      <from  category="income">Net World</from>  
      <amount>1240.50</amount>
      <date>24/8/2004</date>
      <description>Paycheque</description>
   </deposit>

   <payment type="cheque" chequeNum="C1210">
      <to category="other">Hank's Hardware</to>
      <amount>29.15</amount>
      <date>24/8/2004</date>
      <description>Drill kit</description>
   </payment>

   <payment type="cheque" chequeNum="C1211">
      <to category="food">Food Mart</to>
      <amount>149.51</amount>
      <date>25/8/2004</date>
      <description>Groceries</description>
   </payment>

   <payment type="cheque" chequeNum="C1212">
      <to category="other">Citgo</to>
      <amount>22.50</amount>
      <date>25/8/2004</date>
      <description>Petrol</description>
   </payment>

   <payment type="cheque" chequeNum="C1213">
      <to category="food">Pizza Now</to>
      <amount>33.24</amount>
      <date>28/8/2004</date>
      <description>Dinner</description>
   </payment>

   <payment type="cheque" chequeNum="C1214">
      <to category="utilities">Central Electric</to>
      <amount>94.85</amount>
      <date>29/8/2004</date>
      <description>Electric Bill</description>
   </payment>

   <payment type="withdrawal">
      <to category="cash">cash</to>
      <amount>200</amount>
      <date>29/8/2004</date>
      <description>ATM withdrawal</description>
   </payment>

   <payment type="cheque" chequeNum="C1215">
      <to category="clothing">Styling</to>
      <amount>172.50</amount>
      <date>30/8/2004</date>
      <description>New pants, shirt</description>
   </payment>

   <payment type="cheque" chequeNum="C1216">
      <to category="food">Food Mart</to>
      <amount>89.11</amount>
      <date>30/8/2004</date>
      <description>Groceries</description>
   </payment>

   <deposit type="transfer">
      <from category="savings">Saving Account</from>
      <amount>300</amount>
      <date>1/9/2004</date>
   </deposit>

   <payment type="cheque" chequeNum="C1217">
      <to category="entertainment">Ticket Source</to>
      <amount>115.95</amount>
      <date>3/9/2004</date>
      <description>Tickets for the Jazz Concert</description>
   </payment>
</account>

你对比的看看,应该和你原来的业务关系一样吧
我是用xmlspy编辑验证的。
另外,注意校验文档,里面有好些大小写字符了,或是两处写的不一样而造成的错误。


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
6,486.328ms