【php基础】XML,DTD实例

时间:2023-03-08 22:54:42
【php基础】XML,DTD实例

要求一:能看懂别人写的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