要求一:能看懂别人写的DTD文件,自己能写更好。例如products.dtd:
<!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ENTITY EMAIL "jd@jd-tools.com"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)>
要求二:能根据别人写的DTD文件来写符合标准的xml文件,products.xml
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE CATALOG SYSTEM "products.dtd"> <CATALOG> <PRODUCT NAME="冰箱" CATEGORY="HandTool" PLANT="Chicago" INVENTORY="Discontinued"> <SPECIFICATIONS WEIGHT="80kg" POWER="1000w">这是国产海尔冰箱</SPECIFICATIONS> <PRICE>1000</PRICE> <NOTES>轻拿轻放</NOTES> </PRODUCT> </CATALOG>
要求三:可以检验自己写的xml文件是否有误, checkdtd.html
<html> <head> <title>测试dtd</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> <script language="javascript"> <!-- //创建一个xml解析器 var xmldoc = new ActiveXObject("Microsoft.XMLDOM"); //开启校验功能 xmldoc.validateOnParse =true; //指定对哪个 xml文件校验 xmldoc.load("products.xml"); //如果有错误信息,则输出 document.write("错误信息="+xmldoc.parseError.reason+"<br/>"); document.write("错误的行号="+xmldoc.parseError.line+"<br/>"); //--> </script> </head> </html>
以上代码写的时候都要注意编码一致为utf-8