一:XML约束概念
xml约束:可以编写一个文档来约束xml文件的书写规范。
xml语言格式比较严谨,不可能让程序员随意编写,所以必须要有约束。
二:常用的xml约束技术
1:DTD,document type definition
2:校验xml文件正当性
a:使用解析工具
b:使用ide工具,如:eclipse
books.html
1 <?xml version="1.0" ?> 2 <!DOCTYPE bookstore SYSTEM "book.dtd"> 3 <bookstore> 4 <book> 5 <name>Thinking in java</name> 6 <author>Tom</author> 7 <price>105.0</price> 8 </book> 9 <book> 10 <name>Thinking in c</name> 11 <author>Jack</author> 12 <price>85.0</price> 13 </book> 14 </bookstore>
books.dtd
1 <!ELEMENT bookstore(book+)> 2 <!ELEMENT book(name,author,price)> 3 <!ELEMENT name(#PCDATA)> 4 <!ELEMENT author(#PCDATA)> 5 <!ELEMENT price(#PCDATA)>
3:DTD约束有两种方式,一种作为单独的文件编写,也可以在XML文件内编写。
a:在XML文件内编写DTD
!DOCTYPE:定义约束 书架:根标签
b:外部引入DTD
<!DOCTYPE 书架 "books.dtd">
4:引用DTD约束
三:DTD约束语法细节
1:元素、属性、实体
2:元素定义
3:属性定义
使用ATTLIST设置属性,#REQUIRED 为必须的, IMPLIED 为可选的
4:常用的属性值类型
a:ENUMERATED,枚举
b:ID
c:ENTITY,实体
引用实体:
参数实体:
四:案例分析
1:dtd约束文件
1 <!DOCTYPE CATALOG [ 2 3 <!ENTITY AUTHOR "John Doe"> 4 <!ENTITY COMPANY "JD Power Tools, Inc."> 5 <!ENTITY EMAIL "jd@jd-tools.com"> 6 7 <!ELEMENT CATALOG (PRODUCT+)> 8 9 <!ELEMENT PRODUCT 10 (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> 11 <!ATTLIST PRODUCT 12 NAME CDATA #IMPLIED 13 CATEGORY (HandTool|Table|Shop-Professional) "HandTool" 14 PARTNUM CDATA #IMPLIED 15 PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" 16 INVENTORY (InStock|Backordered|Discontinued) "InStock"> 17 18 <!ELEMENT SPECIFICATIONS (#PCDATA)> 19 <!ATTLIST SPECIFICATIONS 20 WEIGHT CDATA #IMPLIED 21 POWER CDATA #IMPLIED> 22 23 <!ELEMENT OPTIONS (#PCDATA)> 24 <!ATTLIST OPTIONS 25 FINISH (Metal|Polished|Matte) "Matte" 26 ADAPTER (Included|Optional|NotApplicable) "Included" 27 CASE (HardShell|Soft|NotApplicable) "HardShell"> 28 29 <!ELEMENT PRICE (#PCDATA)> 30 <!ATTLIST PRICE 31 MSRP CDATA #IMPLIED 32 WHOLESALE CDATA #IMPLIED 33 STREET CDATA #IMPLIED 34 SHIPPING CDATA #IMPLIED> 35 36 <!ELEMENT NOTES (#PCDATA)> 37 38 ]>
2:根据dtd写的CATELOG.xml
1 <?xml version="1.0" encoding="utf-8" ?> 2 <!DOCTYPE CATALOG SYSTEM "dtd/catelog.dtd"> 3 <CATALOG> 4 <PRODUCT> 5 <SPECIFICATIONS>water</SPECIFICATIONS> 6 <PRICE>3.5</PRICE> 7 </PRODUCT> 8 </CATALOG>